public class TestMemory {
    public static void main(String[] args) {
        //返回虚拟机试图使用的最大内存
        long max = Runtime.getRuntime().maxMemory(); //字 节 1024*1024
        //返回jvm初始化总内存
        long totalMemory = Runtime.getRuntime().totalMemory();
        System.out.println("jvm最大内存:" + max + "字节" + (double)max/1024/1024 +  "MB:");
        System.out.println("jvm总内存:" + totalMemory + "字节" + (double)totalMemory/1024/1024 +  "MB:");
        /*结论 默认情况下 jvm分配的总内存(最大)为系统内存 1/4  初始化内存为系统内存 1/64 可以进行修改*/

        /*
        修改JVM内存参数，进入Edit Configurations 添加VM option
        命令为： -Xms1024m -Xmx1024m -XX:+PrintGCDetails 可以打印gc明细
        jvm最大内存:1029177344字节981.5MB:
        jvm总内存:1029177344字节981.5MB:
        Heap堆
        PSYoungGen      total 305664K, used 20971K [0x00000000eab00000, 0x0000000100000000, 0x0000000100000000)
        eden space 262144K, 8% used [0x00000000eab00000,0x00000000ebf7afb8,0x00000000fab00000)
        from space 43520K, 0% used [0x00000000fd580000,0x00000000fd580000,0x0000000100000000)
        to   space 43520K, 0% used [0x00000000fab00000,0x00000000fab00000,0x00000000fd580000)
        ParOldGen       total 699392K, used 0K [0x00000000c0000000, 0x00000000eab00000, 0x00000000eab00000)
        object space 699392K, 0% used [0x00000000c0000000,0x00000000c0000000,0x00000000eab00000)
        Metaspace       used 3333K, capacity 4496K, committed 4864K, reserved 1056768K
        class space    used 362K, capacity 388K, committed 512K, reserved 1048576K

        通过该信息可以看出 heap中包含 新生代、老生代、元空间
        但将新生代、老生代内存相加 305664K + 699392K = 1005056k 已经等于了 JVM的内存值
        所以得出结论：逻辑上堆内包含 新生代、老生代、元空间(使用本地内存)，但物理上不包含。
        */

    }
}
